home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 501-525 / disk_503 / pcq / pcq12asc.lzh / Runtime / Writers / WriteInt.asm < prev    next >
Assembly Source File  |  1991-04-16  |  1KB  |  48 lines

  1.  
  2. *    WriteInt.asm (of PCQ Pascal runtime library)
  3. *    Copyright (c) 1989 Patrick Quaid
  4.  
  5. *    Write an integer to a text file.
  6.  
  7. *    Upon entry, d0 holds the value to write.  The word on top of
  8. *    the stack holds the minumum field width, and the long word
  9. *    below that holds the file record address
  10. *
  11.  
  12.     SECTION    PCQ_Runtime,CODE
  13.  
  14.     XREF    _p%PadOut
  15.     XREF    i_ldiv
  16.     XREF    outbuffer
  17.     XREF    _p%WriteText
  18.     XREF    _p%IOResult
  19.     XREF    _IntToStr
  20.  
  21.     XDEF    _p%WriteInt
  22. _p%WriteInt
  23.  
  24.     tst.l    _p%IOResult        ; is IO system OK?
  25.     bne    5$            ; if not, leave
  26.  
  27.     sub.l    #16,sp            ; allocate work space
  28.     move.l    sp,-(sp)        ; push this address
  29.     move.l    d0,-(sp)        ; push integer value
  30.     jsr    _IntToStr        ; fill buffer with integer
  31.     addq.l    #8,sp            ; pop stuff off stack
  32.  
  33.     move.l    d0,-(sp)        ; save length of ascii representation
  34.     move.l    26(sp),a0        ; a0 := file record address
  35.     move.w    24(sp),d0        ; d0 := the field width
  36.     sub.l    (sp),d0            ; how many extras?
  37.     ble    4$            ; if none, skip this
  38.     jsr    _p%PadOut        ; write d0 spaces to a0 file rec
  39. 4$    move.l    (sp)+,d3        ; retrieve representation length
  40.     move.l    sp,a1            ; point to first char
  41.     jsr    _p%WriteText        ; write d3 bytes at a1 to a0
  42.     add.l    #16,sp            ; free work space
  43.  
  44. 5$    rts
  45.  
  46.     END
  47.  
  48.